import {EDITUSER,RESET_USER} from '../constant'
import storageUtils from '../../utils/storageUtils'
import {message} from 'antd'
import api from '../../api'


/*
退出登陆的同步action
 */
export const logout = () =>  {
    // 删除local中的user
    if(localStorage.user){
        storageUtils.removeUser()
    }
   if(sessionStorage.user){
        sessionStorage.removeItem("user")
   }
    // 返回action对象
    return {type: RESET_USER}
  }
/*
接收用户的同步action
*/
export const receiveUser = (data) => ({type: EDITUSER, data})
//登录的异步action//自动登录与维持登录状态功能的代码
export const login = data => {
    return async dispatch =>{
         //本来应该使用try catch进行请求是否失败的判断,
        //但已经进行了axios的请求封装，并进行了统一处理所以不需要了
        let res = await api.login.login(data)
        console.log(res);
        if(res.data.status === 0){//与后端代码有关res.send()
            message.success("登录成功");
            let user = res.data
            dispatch(receiveUser(user))
            if(data.remember){
                storageUtils.saveUser(user) // 保存到local中
            } else{
                //是否自动登录，否则关闭页面下次需要再次登录
                sessionStorage.user = JSON.stringify(user)
            }
        } else {
            message.error(res.data.msg);
        }
    }
}